fn main(){


    let greater_than = |x:&i32| *x > 10;
    let less_than = |x:&i32| *x < 20;

    let z = are_both_true(greater_than, less_than, &19);
    println!("{}", z);


}


fn are_both_true<T,U,V>(x: T, y: U, item:&V) -> bool
where T: Fn(&V) -> bool, U: Fn(&V)->bool{
    x(item) && y(item)
}